home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / Utilities / Unix / WhosOnFirst / Talk.m < prev    next >
Text File  |  1992-12-26  |  1KB  |  53 lines

  1. #import <appkit/Pasteboard.h>
  2. #import <appkit/Speaker.h>
  3. #import <appkit/Listener.h>
  4. #import "Talk.h"
  5.  
  6. /*===========================================================================
  7.  
  8.     File: Talk.m
  9.  
  10.     Purpose:  This file contains the code which implements the UNIX talk
  11.         facility.  When a user requests "talk", terminal is 
  12.         launched and the resulting csh is passed the talk command.
  13.  
  14. ===========================================================================*/
  15.  
  16. @implementation Talk:Object
  17.  
  18. - init
  19. {
  20.     return self;
  21. }
  22.  
  23. - copyString:(char *)s
  24. {
  25.     id p = [Pasteboard new];
  26.     [p declareTypes:&NXAsciiPboard num:1 owner:self];
  27.     [p writeType:NXAsciiPboard data:s length:strlen(s)];
  28.     return self;
  29. }
  30.  
  31. - launchTerminal:(char *)program
  32. {
  33.     id p = [NXApp appSpeaker];
  34.     port_t t = NXPortFromName("Terminal",NULL);
  35.     int ok;
  36.     if (t==PORT_NULL) return self;
  37.     [p setSendPort:t];
  38.     [self copyString:program];
  39.     (void)[p msgPaste:&ok];
  40.     return self;
  41. }
  42.  
  43. - talk:(char *) name tty:(char *) tty host:(char *) host
  44. {
  45. char command[256];
  46.  
  47.     sprintf(command,"talk %s %s\n", name, tty);
  48.     [self launchTerminal:command];
  49.     return self;
  50. }
  51.  
  52. @end
  53.